package top.roadvast.springboot.design_pattern.singleton;

/**
 * @Author 郭泽鹏
 * @Date 2021/10/19 15:51
 * @Version 1.0
 * @Description
 *      懒汉式（线程不安全）【不推荐使用】
 *      这种写法起到了Lazy Loading的效果，但是只能在单线程下使用。如果在多线程下，
 *      一个线程进入了if (singleton == null)判断语句块，还未来得及往下执行，另一个线程也通过了这个判断语句，
 *      这时便会产生多个实例。所以在多线程环境下不可使用这种方式。
 */
public class Singleton03 {
    private static Singleton03 instance;

    /**
     * 不允许外部类访问
     */
    private Singleton03() {
    }

    /**
     * 外部通过此方法调用本类实例
     * @return 本类实例
     */
    public Singleton03 getInstance() {
        if (instance == null) {
            instance = new Singleton03();
        }
        return instance;
    }
}
